البرمجة

مفاهيم جافا: String وClass وObject

السلاسل النصية String والأصناف Class والكائنات Object والبرامج الفرعية Subroutine في جافا

تُعد لغة جافا (Java) من أشهر لغات البرمجة عالية المستوى وأكثرها استخداماً في تطوير التطبيقات المتنوعة، سواء كانت تطبيقات ويب أو تطبيقات سطح المكتب أو تطبيقات الهواتف المحمولة. تتميز جافا بخصائص متعددة مثل القابلية للتنقل عبر الأنظمة المختلفة، وإدارة الذاكرة التلقائية، والبرمجة الكائنية التوجه (Object-Oriented Programming). من بين المفاهيم الأساسية في جافا والتي تشكل لبنة أساسية لفهم البرمجة فيها هي السلاسل النصية (String)، والأصناف (Classes)، والكائنات (Objects)، والبرامج الفرعية (Subroutines).

هذا المقال يستعرض هذه المفاهيم تفصيلياً، مع شرح دقيق وواضح لكل مفهوم مع تقديم أمثلة تطبيقية توضح أهميتها ودورها في تطوير برامج جافا.


السلاسل النصية String في جافا

تعريف السلاسل النصية

السلسلة النصية (String) في جافا هي عبارة عن مجموعة متتابعة من الأحرف النصية التي تُستخدم لتخزين وعرض النصوص. تعد السلاسل النصية من أكثر أنواع البيانات استخدامًا في البرمجة، فهي تمثل النصوص، الأسماء، العناوين، وغيرها من البيانات النصية.

في جافا، السلاسل النصية ليست نوع بيانات بدائيًا (Primitive type) كما هو الحال مع int أو boolean، بل هي عبارة عن كائن (Object) من الصنف String. هذا يعني أن أي سلسلة نصية يتم إنشاؤها هي في الواقع كائن من هذا الصنف.

إنشاء السلاسل النصية

يمكن إنشاء سلسلة نصية في جافا بطريقتين رئيسيتين:

  1. الطريقة المباشرة (باستخدام الأقواس المزدوجة)

    مثال:

    java
    String greeting = "مرحبا بالعالم";
  2. باستخدام المُنشئ الخاص بالصنف String

    مثال:

    java
    String greeting = new String("مرحبا بالعالم");

تُعتبر الطريقة الأولى أكثر كفاءة لأنها تستفيد من خاصية التخزين المؤقت (String Pool) التي تحتفظ بالكائنات النصية لتقليل استهلاك الذاكرة.

خصائص السلاسل النصية في جافا

  • عدم القابلية للتغيير (Immutable):

    بمجرد إنشاء كائن String، لا يمكن تغيير محتواه. أي تعديل على السلسلة النصية يؤدي إلى إنشاء نسخة جديدة منها في الذاكرة.

  • دعم عمليات نصية متعددة:

    توفر جافا العديد من الدوال والطرق (Methods) للعمل مع النصوص، مثل الطول (length())، والبحث عن نص فرعي (indexOf())، واستبدال النصوص (replace())، والتحويل إلى أحرف كبيرة أو صغيرة (toUpperCase(), toLowerCase())، وغيرها.

مثال عملي

java
String name = "محمد"; System.out.println("مرحباً " + name); System.out.println("طول النص: " + name.length()); System.out.println("النص بعد التحويل إلى أحرف كبيرة: " + name.toUpperCase());

الأصناف Class في جافا

تعريف الصنف

الصنف (Class) في جافا هو قالب أو مخطط يتم من خلاله تعريف نوع معين من الكائنات (Objects). يحتوي الصنف على البيانات (الحقول أو المتغيرات) والسلوكيات (الدوال أو الطرق) التي تميز الكائنات المشتقة منه.

يمكن النظر إلى الصنف على أنه وصف مفصل لكائن معين، يحدد خصائصه وطريقة تفاعله مع البيانات الأخرى.

مكونات الصنف

  • الحقول (Fields): تمثل المتغيرات التي تحتوي على البيانات الخاصة بالكائن.

  • الطرق (Methods): هي الدوال التي تحدد سلوك الكائن أو الوظائف التي يمكنه القيام بها.

  • البنّاء (Constructor): هو برنامج فرعي خاص يُستخدم لإنشاء الكائنات وتهيئتها بالقيم الأولية.

تعريف صنف بسيط في جافا

java
public class Person { // الحقول String name; int age; // البنّاء public Person(String name, int age) { this.name = name; this.age = age; } // طريقة عرض معلومات الشخص public void displayInfo() { System.out.println("الاسم: " + name); System.out.println("العمر: " + age); } }

شرح المثال

في المثال أعلاه، Person هو صنف يحتوي على حقلين name و age، وبنّاء يستقبل قيم هذه الحقول عند إنشاء الكائن. كما يحتوي على طريقة displayInfo التي تعرض بيانات الكائن.


الكائنات Object في جافا

تعريف الكائن

الكائن (Object) في جافا هو نسخة حية ومُفعّلة من الصنف. بمجرد تعريف الصنف، يمكن إنشاء عدد غير محدود من الكائنات من هذا الصنف، كل كائن يحمل بياناته الخاصة ويمكنه تنفيذ السلوكيات المعرفة في الصنف.

إنشاء كائن في جافا

يمكن إنشاء كائن باستخدام الكلمة المفتاحية new مع استدعاء البنّاء الخاص بالصنف.

java
Person person1 = new Person("علي", 30); person1.displayInfo();

علاقة الصنف بالكائن

  • الصنف هو التصميم أو القالب.

  • الكائن هو التطبيق الفعلي لذلك التصميم.

هذا يسمح بإعادة استخدام الكود وتطوير برامج مرنة وقابلة للتوسع.

إدارة الكائنات والذاكرة

جافا تدير ذاكرة الكائنات تلقائياً من خلال آلية تُسمى جمع القمامة (Garbage Collection)، التي تقوم بتحرير الذاكرة المستخدمة من قبل الكائنات التي لم يعد لها مرجع في البرنامج.


البرامج الفرعية Subroutines في جافا

تعريف البرامج الفرعية

البرامج الفرعية (Subroutines) في جافا هي عبارة عن أجزاء من الكود تُعرف عادة بالطرق (Methods). تُستخدم لتقسيم البرنامج إلى وحدات صغيرة ومنظمة تقوم بتنفيذ مهمة معينة، مما يسهل إعادة الاستخدام، الصيانة، والاختبار.

أنواع البرامج الفرعية في جافا

  • الطرق العادية (Instance Methods): تُنفذ على كائنات الصنف.

  • الطرق الثابتة (Static Methods): تنتمي للصنف نفسه ولا تحتاج إلى إنشاء كائن لاستدعائها.

تعريف طريقة في جافا

java
public int sum(int a, int b) { return a + b; }

في هذا المثال، sum طريقة تستقبل متغيرين وترجع ناتج جمعهما.

الطرق الثابتة

java
public static void printMessage() { System.out.println("رسالة من الطريقة الثابتة"); }

يمكن استدعاء هذه الطريقة بدون إنشاء كائن:

java
ClassName.printMessage();

استخدام البرامج الفرعية في البرمجة الكائنية

تساعد الطرق في تعريف السلوكيات التي يمكن للكائن القيام بها، وتسمح بتنظيم الكود بشكل منطقي، مثل فصل عمليات الحساب عن عمليات الإدخال والإخراج.

مثال كامل يدمج المفاهيم الأربعة

java
public class Calculator { // طريقة لجمع رقمين public int add(int x, int y) { return x + y; } // طريقة ثابتة لطباعة رسالة public static void printWelcome() { System.out.println("مرحباً بكم في الحاسبة"); } } public class Main { public static void main(String[] args) { Calculator.printWelcome(); Calculator calc = new Calculator(); int result = calc.add(10, 20); System.out.println("الناتج: " + result); } }

العلاقة بين المفاهيم الأساسية: String, Class, Object, Subroutine

تتكامل هذه المفاهيم لتشكيل جوهر لغة جافا:

  • السلاسل النصية (String) هي نوع خاص من الكائنات التي تُستخدم لتخزين النصوص.

  • الأصناف (Class) تُعرّف البنية العامة للكائنات.

  • الكائنات (Object) هي النسخ الحية للأصناف والتي تحمل البيانات وتنفيذ الوظائف.

  • البرامج الفرعية (Subroutine أو الطرق) تُستخدم لتعريف سلوكيات الكائنات أو القيام بمهام مستقلة.


أهمية فهم هذه المفاهيم في البرمجة بجافا

التمكن من هذه المفاهيم يفتح المجال لتصميم برامج مرنة، قابلة للصيانة والتطوير، كما يساعد في استغلال ميزات البرمجة الكائنية في جافا، والتي تسمح بإنشاء تطبيقات معقدة مع تقليل التكرار وتعزيز إعادة استخدام الكود.


جدول يوضح الفرق بين أنواع البيانات والبرامج الفرعية

المفهوم التعريف الخصائص الرئيسية أمثلة
String كائن نصي لتخزين النصوص غير قابل للتغيير، يحتوي على طرق نصية كثيرة "مرحبا", new String("عالم")
Class قالب يحدد شكل وسلوك الكائنات يحتوي على حقول، طرق، ومنشئات class Person {...}
Object نسخة حية من الصنف يحمل بيانات خاصة، يمكن تنفيذ طرق الصنف Person p = new Person()
Subroutine قطعة كود تقوم بمهمة محددة يمكن أن تكون ثابتة أو مرتبطة بالكائن void display() {...}

خاتمة

تمثل السلاسل النصية، الأصناف، الكائنات، والبرامج الفرعية الركائز الأساسية لفهم كيفية بناء برامج باستخدام لغة جافا. المعرفة الدقيقة بهذه المفاهيم تمكن المبرمج من كتابة كود منظم، واضح، وفعال، مع إمكانية تطوير حلول برمجية متنوعة من تطبيقات بسيطة إلى أنظمة كبيرة ومعقدة. تبني هذه المفاهيم فهماً عميقاً للبرمجة الكائنية التوجه، وهو الأساس الذي ترتكز عليه لغة جافا بشكل كبير، ويجعلها أداة قوية في عالم البرمجة الحديثة.


المصادر والمراجع